# ==============================================
# 导入层
# ==============================================

from .lanying_HID import BlueHid                    # 导入已加载的蓝影键鼠模块


from ascript.android import system                  # 导程序控制包
import time                                         # 时间操作模块（用于延时、计时等）
from ascript.android.node import Selector           # 导AS控件包（用于安卓界面控件选择操作）
from .Android_intent import open_uri_activity       # 导入Android_intent模块

from .feishu_api import add_log_data                # 导入飞书API日志模块

# ==============================================
# 封装层
# ==============================================


#获取个人账号信息，包括用户名和ID
def get_personal_info(coze_token, adddata_workflow_id, log_app_token, number=None):
    """
    获取个人账号信息，包括用户名和ID
    
    参数:
        coze_token: 扣子API访问令牌
        adddata_workflow_id: 数据添加工作流ID
        log_app_token: 飞书日志应用Token
        number: 设备编号，默认为None
        
    返回:
        tuple: (my_name, my_id) - 用户名和用户ID
    """
 

    # 打开小红书我的个人主页页面
    web_window=open_uri_activity("xhsdiscover://profile")


    if web_window:

        # 等待页面加载完成（必须，否则无法获取数据）
        time.sleep(3)

        # 添加尝试次数计数
        max_attempts = 3
        attempt = 1
        
        while attempt <= max_attempts:
            print(f"[获取个人信息] 尝试 {attempt}/{max_attempts} 获取用户信息...")
            
            # 尝试获取用户名
            name_node = Selector(6).type("TextView").depth(20).clickable(True).find()
            if not name_node:
                print(f"[获取个人信息] 尝试 {attempt}/{max_attempts} 未找到用户名控件")
                attempt += 1
                if attempt <= max_attempts:
                    print("[获取个人信息] 等待1秒后重试...")
                    time.sleep(1)  # 等待一会再次尝试
                continue
            my_name = name_node.text
            
            # 尝试获取用户ID
            id_node = Selector(6).type("TextView").depth(22).clickable(True).find()
            if not id_node:
                print(f"[获取个人信息] 尝试 {attempt}/{max_attempts} 未找到用户ID控件")
                attempt += 1
                if attempt <= max_attempts:
                    print("[获取个人信息] 等待1秒后重试...")
                    time.sleep(1)  # 等待一会再次尝试
                continue
            my_id = id_node.text
            
            # 验证获取的值是否有效
            if not my_name or not my_id or my_name.strip() == "" or my_id.strip() == "":
                print(f"[获取个人信息] 尝试 {attempt}/{max_attempts} 获取到的用户名或ID为空")
                attempt += 1
                if attempt <= max_attempts:
                    print("[获取个人信息] 等待1秒后重试...")
                    time.sleep(1)  # 等待一会再次尝试
                continue
            
            # 成功获取数据，结束尝试循环
            print(f"[获取个人信息] 用户信息 - 用户名：{my_name}，ID：{my_id}")
            return my_name, my_id
        
        # 如果所有尝试都失败
        print("[获取个人信息] 经过3次尝试，仍无法获取用户信息，程序退出")
        
        # 发消息给飞书日志表格
        add_log_data(
            coze_token=coze_token, 
            adddata_workflow_id=adddata_workflow_id, 
            log_app_token=log_app_token, 
            title="未查询到相关控件，账号信息获取错误", 
            content=f"**设备编号**: {number if number else '未知'}\n**操作**: 获取小红书账号信息\n**尝试次数**: {max_attempts}次\n**错误**: 无法获取用户名/ID\n**影响**: 程序已退出", 
            tag="账号信息获取"
        )

        # 程序终止
        system.exit()

    else:
        print("[获取个人信息] 打开小红书我的个人主页页面失败")
        
        # 发消息给飞书日志表格
        add_log_data(
            coze_token=coze_token, 
            adddata_workflow_id=adddata_workflow_id, 
            log_app_token=log_app_token, 
            title="页面访问失败，账号信息获取错误", 
            content=f"**设备编号**: {number if number else '未知'}\n**操作**: 尝试打开小红书个人主页\n**错误**: 无法打开页面\n**影响**: 程序已退出", 
            tag="账号信息获取"
        )

        # 程序终止
        system.exit()
 

#==============================================
# 主程序
#==============================================
if __name__ == "__main__":
    # 测试用
    my_name, my_id = get_personal_info()
    # 打印结果
    print(f" 用户名：{my_name}，ID：{my_id}")    
